/*
 * @lc app=leetcode.cn id=541 lang=typescript
 *
 * [541] 反转字符串 II
 */

// @lc code=start

// 思路：
// 每2k一个循环，判断开始结束的位置

// 复杂度: O(n) O(1)

function reverseStr(s: string, k: number): string {
    const res: string[] = s.split('');

    for (let i = 0; i < s.length; i += 2 * k) {
        let start: number = i
        let end: number = Math.min(start + k - 1, res.length - 1)
        while (start < end) {
            let tmp: string = res[start]
            res[start++] = res[end]
            res[end--] = tmp
        }
    }

    return res.join('')
};
// @lc code=end

console.log(reverseStr('abcdefg', 2));
